package com.wk.springboot.bean;

import org.apache.commons.lang.StringUtils;

/**
 * @Date: 2019/1/3 13:38
 * @Description: ResultDefine
 */
public class ResultDefine {

    /** 标记这个 ResultDefine 是否有效, 即是否采用此方式定义结果集 */
    private boolean valid = false;

    private String[] fieldNames = {};

    public ResultDefine() {
    }

    /**
     * 根据 resultDefine 字符串 来初始化
     *
     * resultDefine字符串 即 ExportEntity 中的 resultDefine字符串定义(可以指定 _id, _score, _source, 以及_source include或者 field枚举的字段等)
     *
     * resultDefine字符串 只要不为空就会使用, 所以当不符合规范时会抛出异常
     * resultDefine字符串 格式如:
     *      "_id, '一个常量', '带#{task.Cid}的常量', _score, _source, xxx.xx.x"
     *      (xxx.xx.x 是query中 _source include或者 field枚举的字段)
     *
     * @param resultDefine
     */
    public ResultDefine(String resultDefine) throws Exception {
        try {
            this.fieldNames = StringUtils.split(resultDefine, ",");
            valid = true;
        } catch (Exception e) {
            throw new Exception(String.format("识别到了自定义结果集定义:‘%s’, 请检查是否符合规范", resultDefine), e);
        }
    }


    public ResultDefine(String[] fieldNames) {
        this.fieldNames = fieldNames;
    }

    public boolean getValid() {
        return this.valid;
    }

    /**
     * Sets the valid.
     *
     * <p>You can use getValid() to get the value of valid</p>
     *
     * @param valid valid
     */
    public void setValid(boolean valid) {
        this.valid = valid;
    }

    public String[] getFieldNames() {
        return fieldNames;
    }

    public void setFieldNames(String[] fieldNames) {
        this.fieldNames = fieldNames;
    }


}
